package oo;

public class Maquina implements InterfazMaquina{

	
		private boolean estado = true;
		private boolean estado_lugar1 = true;
		private boolean estado_lugar2 = true;
		private int id;
		

		private Sistema observador;


		public Maquina (int _id){
				
			this.id=_id;
		}


		public void notifyObserver(){		
			observador.updateMaquina(estado, estado_lugar1, estado_lugar2, id);
		}
		
		public void ocupar(){
			if((estado_lugar1 ==false && estado_lugar2==false)){
				this.estado=false;
				cambieEstado();
			}
			else{
				
			   if(estado_lugar1==false){
				   this.estado_lugar2=false;
					this.estado=false;
					cambieEstado();}
			   else{
				   this.estado_lugar1=false;
				   cambieEstado();
			   }
			}				
		}
		
		public void desocupar(int _lugar){
			switch (_lugar){
				case 1: 
					this.estado_lugar1=true;
					break;
				case 2:
					this.estado_lugar2=true;
					break;
				}
			this.estado=true;
			cambieEstado();
		}	
			
		
		// probando metodo
		public boolean getEstado(){
			return estado;
		}
		
		public boolean getEstado_lugar1(){
			return estado_lugar1;
		}
		
		public boolean getEstado_lugar2(){
			return estado_lugar2;
		}
		
		public void cambieEstado(){
			notifyObserver();
			
		}
		public void registerObserver(Sistema _observador){
			this.observador=_observador;
		}
		
		public void procesarlugar1(){
			this.estado_lugar1=true;
			this.estado=true;
			cambieEstado();
		}
		public void procesarlugar2(){
			this.estado_lugar2=true;
			this.estado=true;
			cambieEstado();
			
		}
	}
		


